home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / dskut / dfix12.zip / AFIX.ASM next >
Assembly Source File  |  1991-05-08  |  2KB  |  114 lines

  1.  
  2. ; Some DOS utilities for IBM C
  3. ; Only use with the 'Small model'
  4.  
  5. DGROUP    GROUP    _DATA
  6. _DATA    segment word public 'DATA'
  7.     assume ds:DGROUP
  8.     public    _ALLOCTAB
  9.  
  10. alc    struc
  11.     d    dw    (?)
  12.     mb    db    (?)
  13.     spc    db    (?)
  14.     nc    dw    (?)
  15.     sss    dw    (?)
  16. alc    ends
  17.  
  18. _ALLOCTAB    alc    <>    ; The ALLOCTAB structure is shared with dfix.c
  19.  
  20. _DATA    ends
  21.  
  22. _TEXT    segment byte public 'CODE'
  23.     assume    cs:_TEXT, ds:DGROUP
  24.  
  25.     public    _defaultdev, _devAlloc
  26. IFNDEF    __TURBOC__
  27.     public    _dosVersion
  28. ENDIF
  29.     public    _rdDevice, _wrDevice
  30.  
  31. _defaultdev proc    near
  32.     push    bp
  33.     mov    ah,19h
  34.     int    21h
  35.     xor    ah,ah        ;clear msb            v1.1
  36.     pop    bp
  37.     ret
  38. _defaultdev endp
  39.  
  40. _devAlloc proc    near
  41.     push    bp
  42.     push    di
  43.     push    si
  44.     push    ds
  45.     mov    dx, _ALLOCTAB.d
  46.     inc    dl        ; A=1,...
  47.     mov    ah,1ch
  48.     int    21h
  49.     mov    ah,ds:[bx]
  50.     pop    ds
  51.     mov    _ALLOCTAB.mb, ah
  52.     mov    _ALLOCTAB.spc, al
  53.     mov    _ALLOCTAB.nc, dx
  54.     mov    _ALLOCTAB.sss, cx
  55.     pop    si
  56.     pop    di
  57.     pop    bp
  58.     ret
  59. _devAlloc endp
  60.  
  61. IFNDEF __TURBOC__
  62. _dosVersion proc    near
  63.     push    bp
  64.     mov    ah,30h
  65.     int    21h
  66.     pop    bp
  67.     ret
  68. _dosVersion endp
  69. ENDIF
  70.  
  71. _rdDevice proc    near
  72.     ; rdDevice(dev, start_sector, number_of_sectors, buffer_address) 
  73.     push    bp
  74.     mov    bp,sp
  75.     push    di
  76.     push    si
  77.     mov    al,[bp+4]    ; device #
  78.     mov    dx,[bp+6]    ; logical sector number
  79.     mov    cx,[bp+8]    ; no. sectors
  80.     mov    bx,[bp+0ah]    ; buffer address
  81.     int    25h
  82.     pop    bx        ; remove flags
  83.     jc    err1
  84.      xor    ax,ax        ; return 0 for no error            v1.1
  85. err1:    pop    si
  86.     pop    di
  87.     pop    bp
  88.     ret
  89. _rdDevice endp
  90.  
  91. _wrDevice proc    near
  92.     ; wrDevice(dev, start_sector, number_of_sectors, buffer_address) 
  93.     push    bp
  94.     mov    bp,sp
  95.     push    di
  96.     push    si
  97.     mov    al,[bp+4]    ; device #
  98.     mov    dx,[bp+6]    ; logical sector number
  99.     mov    cx,[bp+8]    ; no. sectors
  100.     mov    bx,[bp+0ah]    ; buffer address
  101.     int    26h
  102.     pop    bx        ; remove flags
  103.     jc    err2
  104.      xor    ax,ax        ; return 0 for no error            v1.1
  105. err2:    pop    si
  106.     pop    di
  107.     pop    bp
  108.     ret
  109. _wrDevice endp
  110.  
  111. _TEXT    ends
  112.  
  113.     end
  114.